/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.aeso.betabit.service.rest;

import br.aeso.betabit.dao.ApostaDao;
import br.aeso.betabit.dao.EventoDao;
import br.aeso.betabit.entity.Aposta;
import br.aeso.betabit.entity.Evento;
import java.math.BigDecimal;
import java.util.List;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

/**
 *
 * @author Edson
 */
@Path("/eventoservice")
public class EventoService {
    
    private EventoDao eventoDao;
    private ApostaDao apostaDao;

    public EventoService() {
        eventoDao = new EventoDao();
        apostaDao = new ApostaDao();
    }
    
    @POST
    @Path("/inserir")
    @Produces(MediaType.APPLICATION_JSON)
    public Response inserir(Evento obj) {
        eventoDao.inserir(obj);
        return Response.status(Response.Status.CREATED).entity(obj).build();
    }
    
    @PUT
    @Path("/atualizar")
    @Produces(MediaType.APPLICATION_JSON)
    public Response atualizar(Evento obj) {
        eventoDao.atualizar(obj);
        return Response.status(Response.Status.ACCEPTED).entity(obj).build();
    }
    
    @DELETE
    @Path("/excluir")
    @Produces(MediaType.APPLICATION_JSON)
    public Response excluir(Evento obj) {
        eventoDao.excluir(obj);
        return Response.status(Response.Status.OK).entity(obj).build();
    }
    
    @GET
    @Path("/consultar/{codigo}")
    @Produces(MediaType.APPLICATION_JSON)
    public Evento consultar(@PathParam("codigo") Long codigo) {
        Evento evento = new Evento();
        evento.setCodigo(codigo);
        evento.setDescricao("Evento "+codigo);
        evento.setResultado1Possivel("Resultado possível 1 ("+codigo+")");
        evento.setResultado1Possivel("Resultado possível 2 ("+codigo+")");
        evento.setValorMaximoAposta(BigDecimal.TEN);
        return evento;
    }
    
    @GET
    @Path("/listar")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Aposta> getApostas() {
        return apostaDao.consultar();
    }
    
    @GET
    @Path("/eventos")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Evento> getEventos() {
        return eventoDao.consultar();
    }
}